package com.ssyt.yt1.day26.thread;

import java.util.ArrayList;

/**
 * implements Runnable比extends Thread带来的好处？<br>
 * a）解决了单继承带来的局限 <br>
 * b）资源共享 <br>
 * c）代码可被多个线程共用
 * 
 *
 * @author Hsu.
 * @since 2015年12月30日
 */
public class RunnableDemo extends ArrayList implements Runnable {

	@Override
	public void run() {
		int sum = 0;
		for (int i = 1; i <= 100; i++) {
			sum += i;
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println(sum);
	}

	public static void main(String[] args) {
		System.out.println("1");

		// 为什么不直接调用重写的run()方法?
		// 如果要实现多线程，需要通过操作系统的支持，因为多线程操作会出现抢
		// 占CPU的情况，要等待CPU进行调度，那么这一点肯定需要操作系统的底
		// 层支持，所以使用private native void start0()调用本机的系统函数。
		Runnable runnable = new RunnableDemo();
		new Thread(runnable).start();
		// new Thread(runnable).start();

		System.out.println("2");
	}

}
